import App from './App'

// 导入语言包（只保留英文和繁体中文）
import en from './i8n/locales/en.js'
import zhHant from './i8n/locales/zh-TW.js'

// 配置语言包
const messages = {
	'en': en,
	'zh-TW': zhHant // 繁体中文
}

// 获取系统语言设置并映射到我们支持的语言
function getLocale() {
	const storedLocale = uni.getStorageSync('appLanguage');
	if (storedLocale) return storedLocale;

	const systemLocale = uni.getLocale() || 'en';

	// 匹配zh-TW或zh-HK等繁体地区，统一使用zh-TW
	if (/zh-?tw|zh-?hk/i.test(systemLocale)) {
		return 'zh-TW';
	} else if (systemLocale.startsWith('zh')) { // 其他中文地区默认使用繁体
		return 'zh-TW';
	}

	return 'en';
}

// 初始化i18n配置
const i18nConfig = {
	locale: getLocale(), // 使用处理后的语言
	fallbackLocale: 'en', // 回退语言（默认为繁体中文）
	messages,
	silentTranslationWarn: true // 关闭翻译缺失警告
}



// 全局切换语言方法
function switchLanguage(locale, i18n) {
	if (['en', 'zh-TW'].includes(locale)) {
		// 设置 i18n 的语言
		if (i18n.mode === 'legacy') {
			// Vue 2
			i18n.locale = locale;
		} else {
			// Vue 3
			i18n.global.locale.value = locale;
		}
		// 持久化存储语言设置
		uni.setStorageSync('appLanguage', locale);
		
		 // 显示对应语言的成功提示
		  uni.showToast({
			title: locale == 'en' ? 'Language switched to English' : '語言已切換為繁體中文',
			icon: 'none',
			duration: 2000
		  })
			  
	} else {
		console.warn(`Unsupported locale: ${locale}, fallback to en`);
		if (i18n.mode === 'legacy') {
			i18n.locale = 'en';
		} else {
			i18n.global.locale.value = 'en';
		}
		uni.setStorageSync('appLanguage', 'en');
	}
}

// #ifndef VUE3
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import './uni.promisify.adaptor'

Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig)

// 全局注册 switchLanguage 方法
Vue.prototype.$switchLanguage = function(locale) {
	switchLanguage(locale, i18n);
}


// 全局注册$t方法
Vue.prototype.$t = function(key) {
	return this.$i18n.t(key)
}

Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
	i18n,
	...App
})
app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
import {
	createI18n
} from 'vue-i18n' // v9.x

// 创建i18n实例
const i18n = createI18n({
	...i18nConfig,
	legacy: false // Vue 3需要设置为false
})

export function createApp() {
	const app = createSSRApp(App)
	app.use(i18n)

	// 全局注册$t方法
	app.config.globalProperties.$t = (key) => {
		return i18n.global.t(key)
	}

	// 全局注册 $switchLanguage 方法
	app.config.globalProperties.$switchLanguage = (locale) => {
		switchLanguage(locale, i18n);
	}


	return {
		app,
		i18n
	}
}
// #endif